import DiyApi from '@/sheep/api/promotion/diy';
import { getTenantByWebsite } from '@/sheep/api/infra/tenant';
import { getTenantId } from '@/sheep/request';
import { defineStore } from 'pinia';
import $platform from '@/sheep/platform';
import $router from '@/sheep/router';
import user from './user';
import sys from './sys';
import { baseUrl, h5Url } from '@/sheep/config';

const app = defineStore({
  id: 'app',
  state: () => ({
    info: {
      // 应用信息
      name: '', // 商城名称
      logo: '', // logo
      version: '', // 版本号
      copyright: '', // 版权信息 I
      copytime: '', // 版权信息 II

      cdnurl: '', // 云存储域名
      filesystem: '', // 云存储平台
    },
    platform: {
      share: {
        methods: [], // 支持的分享方式
        forwardInfo: {}, // 默认转发信息
        posterInfo: {}, // 海报信息
        linkAddress: '', // 复制链接地址
      },
      bind_mobile: 0, // 登陆后绑定手机号提醒 (弱提醒，可手动关闭)
    },
    template: {
      // 店铺装修模板
      basic: {}, // 基本信息
      home: {
        // 首页模板
        style: {},
        data: [],
      },
      user: {
        // 个人中心模板
        style: {},
        data: [],
      },
    },
    shareInfo: {}, // 全局分享信息
    has_wechat_trade_managed: 0, // 小程序发货信息管理  0 没有 || 1 有
  }),
  actions: {
    // 获取Shopro应用配置和模板
    async init(templateId = null) {
      // 检查网络
      const networkStatus = await $platform.checkNetwork();
      if (!networkStatus) {
        $router.error('NetworkError');
      }

      // 检查配置
      if (typeof baseUrl === 'undefined') {
        $router.error('EnvError');
      }

      // 加载租户
      await adaptTenant();

      // 加载装修配置
      await adaptTemplate(this.template, templateId);

      // TODO 芋艿：【初始化优化】未来支持管理后台可配；对应 https://api.shopro.sheepjs.com/shop/api/init
      if (true) {
        this.info = {
          name: '创域家商城',
          logo: 'https://pic.nximg.cn/file/20230629/12419049_155455999128_2.jpg',
          version: '2025.09',
          copyright: '全部开源，个人与企业可 100% 免费使用',
          copytime: 'Copyright© 2018-2025',

          cdnurl: 'https://file.sheepjs.com', // 云存储域名
          filesystem: 'qcloud', // 云存储平台
        };
        this.platform = {
          share: {
            methods: ['forward', 'poster', 'link'],
            linkAddress: h5Url,
            posterInfo: {
              user_bg: '/static/img/shop/config/user-poster-bg.png',
              goods_bg: '/static/img/shop/config/goods-poster-bg.png',
              groupon_bg: '/static/img/shop/config/groupon-poster-bg.png',
            },
            forwardInfo: {
              title: '',
              image: '',
              desc: '',
            },
          },
          bind_mobile: 0,
        };
        this.has_wechat_trade_managed = 0;

        // 加载主题
        const sysStore = sys();
        sysStore.setTheme();

        // 模拟用户登录
        const userStore = user();
        if (userStore.isLogin) {
          userStore.loginAfter();
        }
        return Promise.resolve(true);
      } else {
        $router.error('InitError', res.msg || '加载失败');
      }
    },
  },
  persist: {
    enabled: true,
    strategies: [
      {
        key: 'app-store',
      },
    ],
  },
});

/** 初始化租户编号 */
const adaptTenant = async () => {
  // 暂时跳过租户验证，直接使用默认租户ID
  try {
    console.log('暂时跳过租户验证，使用默认租户ID');
    // 设置默认租户ID
    const defaultTenantId = '1';
    uni.setStorageSync('tenant-id', defaultTenantId);
  } catch (error) {
    console.error('设置默认租户ID失败:', error);
  }
};

/** 初始化装修模版 */
const adaptTemplate = async (appTemplate, templateId) => {
  try {
    let diyTemplate;

    try {
      // 尝试获取模板数据
      const res = templateId
        ? // 查询指定模板，一般是预览时使用
          await DiyApi.getDiyTemplate(templateId)
        : await DiyApi.getUsedDiyTemplate();

      diyTemplate = res.data;
    } catch (error) {
      console.error('获取模板数据失败:', error);
      // 使用空对象作为默认值
      diyTemplate = {};
    }

    console.log('获取到的模板数据:', diyTemplate);

    // 确保模板对象存在
    if (!diyTemplate) {
      console.error('模板数据为空，使用默认值');
      diyTemplate = {};
    }

    // 处理底部导航
    // 适配新的模板数据结构
    const tabBar = diyTemplate?.property?.tabBar || diyTemplate?.tabbar;
    if (tabBar) {
      appTemplate.basic.tabbar = tabBar;
      if (tabBar?.theme) {
        appTemplate.basic.theme = tabBar?.theme;
      }
    } else {
      // 如果没有底部导航，设置默认值
      appTemplate.basic.tabbar = {
        items: [
          {
            url: "/pages/index/index",
            text: "首页",
            iconPath: "/static/images/tabbar/home.png",
            selectedIconPath: "/static/images/tabbar/home-active.png"
          },
          {
            url: "/pages/index/category",
            text: "分类",
            iconPath: "/static/images/tabbar/category.png",
            selectedIconPath: "/static/images/tabbar/category-active.png"
          },
          {
            url: "/pages/index/cart",
            text: "购物车",
            iconPath: "/static/images/tabbar/cart.png",
            selectedIconPath: "/static/images/tabbar/cart-active.png"
          },
          {
            url: "/pages/index/user",
            text: "我的",
            iconPath: "/static/images/tabbar/user.png",
            selectedIconPath: "/static/images/tabbar/user-active.png"
          }
        ]
      };
    }

    // 处理首页数据
    appTemplate.home = diyTemplate?.home || {
      components: [
        {
          id: 'Carousel',
          property: {
            style: {
              padding: 10,
              margin: 10,
              borderRadius: 8,
            },
            data: {
              list: [
                {
                  src: 'https://img.yzcdn.cn/vant/banner-1.jpg',
                  url: '',
                  title: '轮播图1',
                  type: 'image'
                },
                {
                  src: 'https://img.yzcdn.cn/vant/banner-2.jpg',
                  url: '',
                  title: '轮播图2',
                  type: 'image'
                }
              ]
            }
          }
        },
        {
          id: 'ProductList',
          property: {
            style: {
              padding: 10,
              margin: 10,
              borderRadius: 8,
            },
            data: {
              list: [
                {
                  id: 1,
                  title: '商品1',
                  price: '99.00',
                  image: 'https://img.yzcdn.cn/vant/custom-content-image.jpeg'
                },
                {
                  id: 2,
                  title: '商品2',
                  price: '199.00',
                  image: 'https://img.yzcdn.cn/vant/custom-content-image.jpeg'
                }
              ]
            }
          }
        }
      ]
    };

    // 处理用户中心数据
    appTemplate.user = diyTemplate?.user || {
      components: []
    };

    console.log('处理后的模板数据:', appTemplate);
  } catch (error) {
    console.error('加载模板数据失败:', error);
    $router.error('TemplateError');
  }
};

export default app;
